#include <func.h>

int main(int argc, char* argv[])
{
    // ./readdir dir 
    ARGS_CHECK(argc, 2);

    DIR* pdir = opendir(argv[1]);
    ERROR_CHECK(pdir, NULL, "opendir");
    
    struct dirent* pdirent;
    errno = 0;
    long loc;
    while(1) {
        // 事先记录目录流的位置
        long tmploc = telldir(pdir);
        pdirent = readdir(pdir);
        if (pdirent == NULL) {
            break;
        }

        printf("%s ", pdirent->d_name);

        if (strcmp(pdirent->d_name, "Makefile") == 0) {
            loc = tmploc;
        }
    }
    printf("\n");

    printf("----------------------------------\n");

    seekdir(pdir, loc);
    pdirent = readdir(pdir);
    printf("%s\n", pdirent->d_name);
    
    printf("----------------------------------\n");

    rewinddir(pdir);
    pdirent = readdir(pdir);
    printf("%s\n", pdirent->d_name);

    if (errno) {
        perror("readdir");
        exit(1);
    }

    closedir(pdir);
    return 0;
}

